

#ifndef xm_app_config_hpp
#define xm_app_config_hpp

#include <cstdint>
#include <stdio.h>
#include <limits.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef struct app_config{
    const char * log_config_file_name ;
    const char * media_ip ;
    const char * media_ip2 ;
    const char * ipm_ip;
    int min_port ;
    int max_port ;
    const char * http_ip;
    int http_port;
    const char * http_external_ip;
    int http_external_port;
    char tlv_path[PATH_MAX];
    char job_path[PATH_MAX];
    const char * ip1_src;
    const char * ip1_dst;
    const char * ip2_src;
    const char * ip2_dst;
    int echo;
    bool feedback_passthrough;
    const char * debug_mode_string;
    bool is_dumping_rtp;
    bool is_dumping_rtcp;
    int max_video_bitrate_kbps;
    int min_video_bitrate_kbps;
    bool is_translating_fec;
    bool disable_h264;
    bool enable_fec;
    bool compensate_rtcp;
    bool experiment_esmb;
    bool lost_0;
    bool enable_bwe;
    bool enable_mixer_debug;
    bool force_mixer_recording;
    int8_t mixer_activate_level;
    int mixer_opus_lsb;
    int mixer_talker_number;
    const char* proxy_addr;
    bool batch_send;
    int batch_send_packets;
    int batch_send_duration;
    int machineId;

    uint32_t log_if_lost_rate_ge;
    uint64_t log_if_rtt_ge;

    const char* crash_log_dir;

    bool nice_mux;
}app_config;

app_config * app_config_get();

int app_config_parse (int argc, char **argv);

#ifdef __cplusplus
}
#endif
        
#endif /* xm_app_config_hpp */
